Electronic devices (i.e., mobile electronic devices having software/firmware), for example, mobile cellular phones, personal digital assistants (PDA's), pagers, MP3 players, digital cameras, etc. often contain firmware and/or application software that are either provided by the manufacturers of the electronic devices, telecommunication carriers, or third parties. These firmware and application software often contain bugs. New versions (updates) of the firmware and software are periodically released to fix the bugs, introduce new features, or both.
Update programs, code, or functions employed to update the firmware or firmware components may need to be changed or updated. However, the upgraded programs, code or functions may not fit into the space originally available in the electronic device (FLASH memory or another type of memory or storage). Changes to firmware or firmware components may need to be performed in a fault tolerant mode, but fault tolerant code may be difficult to implement.
Electronic devices may employ non-volatile memory, such as FLASH memory chips, to store code and data. Sometimes, more than one memory device may be employed. Updating code or data distributed across multiple memory devices may be difficult, especially if the chips are made by different manufacturers. For example, it is often the case where the architecture of a supplier's FLASH memory chip may not be known. Writing across multiple FLASH memory chips grouped in a distributed fashion may require knowledge of the architecture of the individual FLASH memory chips. Some components in electronic devices may have an embedded FLASH memory segment, which may not be accessible from an external system.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with some aspects of the present invention as set forth in the remainder of the present application with reference to the drawings appended hereto.